home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 March / PCWorld_2007-03_cd.bin / temacd / rapidphp / rapidphp7.exe / {app} / templates / PHP / Calendar.php next >
PHP Script  |  2005-10-05  |  3KB  |  98 lines

  1. <?
  2.  
  3. /*
  4.    Simple Calendar
  5.    by Karlis Blumentals (www.blumentals.net)
  6.  
  7.    Displays a calendar, one month at a time.
  8.    Selected date is passed as parameter day=yyyy-mm-dd
  9.    e.g. myscript.php?day=2004-10-30
  10. */
  11.  
  12. ?>
  13.  
  14.  
  15. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  16.     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  17.  
  18. <html xmlns="http://www.w3.org/1999/xhtml">
  19.  
  20. <head>
  21.   <title>Calendar</title>
  22. </head>
  23.  
  24. <body>
  25.  
  26. <?
  27.  
  28. // date ok flag
  29. $dateok = false;
  30.  
  31. // parse parameter
  32. if (isset($GLOBALS['day'])) {
  33.   list($yr, $mo, $da) = explode('-', $_GET['day']);
  34.   $yr = intval($yr);
  35.   $mo = intval($mo);
  36.   $da = intval($da);
  37.   if (checkdate($mo, $da, $yr)) $dateok = true;
  38. }
  39.  
  40. // if invalid date selected then selected date = today
  41. if (!$dateok) {
  42.   $mo = date('m');
  43.   $da = date('d');
  44.   $yr = date('Y');
  45. }
  46.  
  47. $offset = date('w', mktime(0,0,0,$mo,1,$yr));
  48. // we must have a value in range 1..7
  49. if ($offset == 0) $offset = 7;
  50.  
  51. // days in month
  52. $nd = date('d', mktime(0,0,0,$mo+1,0,$yr));
  53.  
  54. // days array
  55. $days = array();
  56.  
  57. // reset array
  58. for ($i=0;$i<=42;$i++) $days[$i]['out']= ' ';
  59.  
  60. // fill days array
  61. // valid days contain data, invalid days are left blank
  62. $j=1;
  63. for ($i=$offset;$i<=($offset+$nd-1);$i++) {
  64.   $day = $j++;
  65.   $date = $yr.'-'.$mo.'-'.$day;
  66.   $days[$i]['out']= '<a href="?day='.$date.'">'.$day.'</a>';
  67.   $days[$i]['dat']= $date;
  68. }
  69.  
  70. // output table
  71. echo('<table border="1" cellpadding="3" cellspacing="0" width="200">');
  72. echo('<tr>');
  73. echo('<td colspan="1" align="center" class="linkbar"><a href="?day='.date('Y-m-d', mktime(0,0,0,$mo,$da,$yr-1)).'">«</a></td>');
  74. echo('<td colspan="5" align="center" class="linkbar"><p class="calendar">'.$yr.'</p></td>');
  75. echo('<td colspan="1" align="center" class="linkbar"><a href="?day='.date('Y-m-d', mktime(0,0,0,$mo,$da,$yr+1)).'">»</a></td>');
  76. echo('</tr>'."\n");
  77. echo('<tr>');
  78. echo('<td colspan="1" align="center" class="linkbar2"><a href="?day='.date('Y-m-d', mktime(0,0,0,$mo,0,$yr)).'">«</a></td>');
  79. echo('<td colspan="5" align="center" class="linkbar2"><p class="calendar">'.date('F', mktime(0,0,0,$mo,$da,$yr)).'</p></td>');
  80. echo('<td colspan="1" align="center" class="linkbar2"><a href="?day='.date('Y-m-d', mktime(0,0,0,$mo+1,1,$yr)).'">»</a></td>');
  81. echo('</tr>'."\n");
  82. $cntr = 1; // day printing counter
  83. for ($i=1;$i<=6;$i++) {
  84.   echo('<tr>');
  85.   for ($j=1;$j<=7;$j++) {
  86.     $curr = $cntr++;
  87.     if ($days[$curr]['dat'] == $yr.'-'.$mo.'-'.$da) $style = 'bold'; else $style = 'normal';
  88.     echo('<td width="14%" style="font-weight: '.$style.'">'.$days[$curr]['out'].'</td>'."\n");
  89.   }
  90.   echo('</tr>'."\n");
  91. }
  92. echo('</table>');
  93. ?>
  94.  
  95. </body>
  96.  
  97. </html>
  98.